/*
 * Description: performance manager
 */
#ifndef PERF_MANAGER_H
#define PERF_MANAGER_H
#include "error.h"
#include "singleton.h"
#include "rpc_service/recvfrom_host.h"
#include "rpc_service/sendto_host.h"
#include "perf_pipe_reciever.h"
#include <atomic>
#include <mutex>

namespace PERF {
class PerfManager {
public:
    PerfManager() = default;
    ~PerfManager() = default;

    /********************
     * 函数：Init
     * 功能：初始化性能管理类，开始监听管道信息
     * 参数：无
     * 返回：初始化成功返回OK，否则返回非0值
     ********************/
    COMMON::ErrorCode Init();

    /********************
     * 函数：Init
     * 功能：停止监听管道信息
     * 参数：无
     * 返回：成功返回OK，否则返回非0值
     ********************/
    COMMON::ErrorCode Stop();

private:
    static void Listen();
    static void ApplyAllowedSites(const HKEY &hKeyDomains);
    static void Configure();
    static bool m_stopListeningPerfPipe;
};
#define PERF_MANAGER SingletonNew<PERF::PerfManager>::GetInstance()
}  // namespace PERF
#endif